home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / apps / 9 / applic / chckbook.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-04-17  |  6.1 KB  |  261 lines

  1. {
  2.                                 CHKBKRCN.PAS
  3.  
  4.                     Checking Account Statement Analyzer
  5.  
  6.                                     by
  7.  
  8.                               Gordon Burnham
  9.  }
  10.  
  11. program CHECKBOOK;
  12.  
  13. type
  14.     aCredit = array [1..200] of real;
  15.     aDebit  = array [1..100] of real;
  16.     aOut    = array [1..50]  of real;
  17.     aCstrng = array [1..200] of string;
  18.     aDstrng = array [1..100] of string;
  19.     aOstrng = array [1..50]  of string;
  20.  
  21. var
  22.     cr          : aCredit;      {credit array}
  23.     dr          : aDebit;       {debit array}
  24.     outst       : aOut;         {outstanding check array}
  25.     c_str       : aCstrng;      {descriptive strings}
  26.     d_str       : aDstrng;
  27.     o_str       : aOstrng;
  28.     i_bal,                       {initial balance}
  29.     charges,
  30.     interest,
  31.     cr_bal,
  32.     dr_bal,
  33.     o_bal,                      {balance outstanding checks}
  34.     real_bal,                   {actual checkbook balance}
  35.     stmt_bal    : real;         {statement balance}
  36.     oLen,                       {outstanding check array length}
  37.     cLen,                       {credit array length}
  38.     dLen        :integer;       {debit array length}
  39.  
  40. procedure SKIP (Lines: integer);
  41.  
  42. var
  43.     i :  integer;
  44. begin
  45.     for i := 1 to Lines do
  46.         writeln
  47. end;
  48.  
  49.  
  50. procedure CHECKS;
  51.  
  52. var
  53.     i :  integer;
  54. begin
  55.     skip (3);
  56.     writeln ('Enter checks written during accounting period.');
  57.     skip (2);
  58.     writeln ('Enter 0 to "Check Number" to exit.');
  59.     skip (2);
  60.     loop
  61.         writeln;
  62.         write ('Check Number: ');
  63.         readln (c_str[cLen]);
  64.     exit if c_str[cLen] = '0';
  65.         write ('      Amount: ');
  66.         readln (cr[cLen]);
  67.         cLen := cLen + 1;
  68.     end;    {loop}
  69. end;   {CHECKS}
  70.  
  71.  
  72. procedure DEPOSITS;
  73.  
  74. var
  75.     i :  integer;
  76. begin
  77.     skip (3);
  78.     writeln ('Enter deposits made during accounting period.');
  79.     skip (2);
  80.     writeln ('Enter 0 to "Date" to exit.');
  81.     skip (2);
  82.     loop
  83.         writeln;
  84.         write ('Date of deposit: ');
  85.         readln (d_str[dLen]);
  86.     exit if d_str[dLen] = '0';
  87.         write ('         Amount: ');
  88.         readln (dr[dLen]);
  89.         dLen := dLen + 1;
  90.     end;    {loop}
  91. end;    {DEPOSITS}
  92.  
  93.  
  94. procedure OUTSTAND;
  95.  
  96. var
  97.     i  :    integer;
  98. begin
  99.     skip (3);
  100.     writeln ('Enter outstanding checks.');
  101.     skip (2);
  102.     writeln ('Enter 0 to "Check Number" to exit.');
  103.     skip (2);
  104.     loop
  105.         writeln;
  106.         write ('Check Number: ');
  107.         readln (o_str[oLen]);
  108.     exit if o_str[oLen] = '0';
  109.         write ('      Amount: ');
  110.         readln (outst[oLen]);
  111.         oLen := oLen + 1;
  112.     end;    {loop}
  113. end;    {OUTSTAND}
  114.  
  115.  
  116. procedure COMPUTE;
  117.  
  118. var
  119.     i  :   integer;
  120. begin
  121.     cr_bal := 0;
  122.     dr_bal := 0;
  123.     o_bal  := 0;
  124.     for i := 1 to cLen do
  125.         cr_bal := cr_bal + cr[i];
  126.     for i := 1 to dLen do
  127.         dr_bal := dr_bal + dr[i];
  128.     for i := 1 to oLen do
  129.         o_bal := o_bal + outst[i];
  130.     real_bal := i_bal + dr_bal - cr_bal + interest - charges;
  131.     stmt_bal := real_bal + o_bal;
  132. end;   {COMPUTE}
  133.  
  134.  
  135. procedure PRINT;
  136.  
  137. var
  138.     i  :   integer;
  139.     f  :   text;
  140.  
  141. procedure SKIPP (Lines :  integer);
  142.  
  143. var
  144.     i  :   integer;
  145. begin
  146.     for i := 1 to Lines do
  147.         writeln (f);
  148. end;    {SKIPP
  149.  
  150. {*}
  151.  
  152. procedure COL (blanks : integer);
  153.  
  154. var
  155.     i  :   integer;
  156. begin
  157.     for i := 1 to Blanks do
  158.         write (f,' ');
  159. end;    {COL
  160.  
  161. {*}
  162.  
  163. begin {Print}
  164. skip (8);
  165. writeln ('                printing output');
  166. skip (5);
  167. rewrite (f, 'LST:');
  168. skipp (1);
  169. Col (10);
  170. writeln (f, '           RECONCILIATION OF BANK STATEMENT');
  171. skipp (2); Col (10);
  172. write (f, 'Initial balance................................. ');
  173. writeln (f, i_bal:8:2);
  174. skipp (1); Col (10);
  175. write (f, 'Bank service charges............................ ');
  176. writeln (f, charges:8:2);
  177. skipp (1); Col (10);
  178. write (f, 'Interest........................................ ');
  179. writeln (f, interest:8:2);
  180. skipp (1); Col (14);
  181. writeln (f, '                    CHECKS');
  182. {                     1         2         3         4         5  }
  183. {            12345678901234567890123456789012345678901234567890  }
  184. Col (14); writeln (f, 'Check Number                              Amount');
  185. for i := 1 to cLen do
  186.     begin
  187.     Col (14);
  188.     write (f, c_str[i]:10);
  189.     col (30);
  190.     writeln (f, cr[i]:8:2)
  191.     end;    {i}
  192. skipp (1); Col (14);
  193. writeln (f, 'Total.................................. ',cr_bal:8:2);
  194. skipp (1); Col (14);
  195. writeln (f, '                   DEPOSITS');
  196. Col (14); writeln (f, 'Date                                      Amount');
  197. for i := 1 to dLen do
  198.     begin
  199.     Col (14);
  200.     write (f, d_str[i]:10);
  201.     col (30);
  202.     writeln (f, dr[i]:8:2)
  203.     end;    {i}
  204. skipp (1); Col (14);
  205. writeln (f, 'Total.................................. ',dr_bal:8:2);
  206. skipp (1); Col (14);
  207. writeln (f, '              OUTSTANDING CHECKS');
  208. Col (14); writeln (f, 'Check Number                              Amount');
  209. for i := 1 to oLen do
  210.     begin
  211.     Col (14);
  212.     write (f, o_str[i]:10);
  213.     col (30);
  214.     writeln (f, outst[i]:8:2)
  215.     end;    {i}
  216. skipp (1); Col (14);
  217. writeln (f, 'Total.................................. ',o_bal:8:2);
  218. skipp (2); Col (18);
  219. writeln (f, 'Actual Checkbook Balance...... ',real_bal:8:2);
  220. skipp (2); Col (18);
  221. writeln (f, 'Bank Statement Balance........ ',stmt_bal:8:2);
  222. writeln (f, chr(12))
  223. end;    {PRINT}
  224.  
  225.  
  226. begin  {main}
  227.     cLen := 1;
  228.     dLen := 1;
  229.     oLen := 1;
  230.     cr_bal := 0;
  231.     dr_bal := 0;
  232.     charges := 0;
  233.     interest := 0;
  234.     skip (4);
  235.     writeln ('        Checkbook Reconciliation');
  236.     writeln;
  237.     writeln ('                   by');
  238.     writeln;
  239.     writeln ('             Gordon Burnham');
  240.     skip (2);
  241.     write ('Initial balance:  ');
  242.     readln (i_bal);
  243.     writeln;
  244.     write ('   Bank charges:  ');
  245.     readln (charges);
  246.     writeln;
  247.     write ('       Interest:  ');
  248.     readln (interest);
  249.     checks;
  250.     cLen := cLen - 1;
  251.     deposits;
  252.     dLen := dLen - 1;
  253.     outstand;
  254.     oLen := oLen - 1;
  255.     compute;
  256.     print
  257. end.    {main}
  258.  
  259.  
  260.  
  261.  Æ_yresí á_ad_cí ó_port_stí ª_x_noteí ¿_y_noteí